package A.动态数组;

import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;

public class _283_移动0 {
    /**
     * 借助hashmap
     * @param nums
     */
    public void moveZeroes(int[] nums) {

        Map<Integer,Integer> map=new HashMap<>();
        int count =0;
        for (int i= 0;i<nums.length;i++){
            if (nums[i] != 0){
                map.put(count,nums[i]);
                count++;
            }
        }

        for (int i= 0;i<nums.length;i++){
            if (i>=map.size()){
                nums[i] = 0;
                continue;
            }
            nums[i] = map.get(i);
        }
    }

    /**
     *类似于冒泡 用一个int记录一下 零的个数 然后不是0的就覆盖数组从1开始
     * 因为刚好0的个数  后面前移从0开始 可以保持一致
     */
    public void moveZeroes1(int[] nums) {
        int count =0;
        for (int i=0;i<nums.length;i++){
            if (nums[i] != 0){
                nums[count] = nums[i];
                count++;
            }
        }

        for (int i=count;i<nums.length;i++){
            nums[i] = 0;
        }

    }
}
